Based on resource and capability of a node in a wireless network, the wireless networks can be classified as a homogeneous or a heterogeneous network. In the homogeneous wireless network, such as a conventional wireless sensor network, all nodes have identical resources and capabilities. On the other hand, in the heterogeneous wireless network, such as wireless machine-to-machine (M2M) network, nodes have different resources and capabilities.
Heterogeneous wireless networks are used in emerging applications including Internet of Things (IOT), industrial automation and smart grids. Some nodes in the heterogeneous wireless networks have sufficient resources, such as memory, storage, process power, energy supply, and communication capability. Other nodes have constrained resources and capabilities. As a result, functions of the nodes in a heterogeneous network can vary. Some nodes can perform many functions and other nodes can only perform limited functions.
A network node represents a physical device. Once the physical device is manufactured, it can be impractical to change its resources and capabilities. This requires technologies running on devices to adapt their functionality to the device. Routing is one of networking technologies to configure a network topology and communicate packets in the network. With an identical set of nodes, different routing algorithm can form different networks that function differently. Some routing algorithms configure efficient networks and some routing algorithms configure inefficient networks.
Conventional routing methods designed for homogeneous wireless network do not consider heterogeneity in the nodes and may not be suitable for nodes with limited resources, or waste resources of more powerful nodes. For example, if the routing method is designed and developed to adopt more powerful nodes, then this routing method cannot be used by less powerful nodes, which can lead to node isolation. If the routing method is designed and developed based on the average powerful nodes, then resources on more powerful nodes are wasted, and resources on less powerful nodes may also prevent those nodes from joining the network.
For example, Ad-hoc On-demand Distance Vector (AODV) routing assumes that nodes have sufficient memory and requires a node to store routing information for every route request and route response received. A node stores forward route entry and also stores reverse routing information. In a large scale network, AODV requires nodes to have a relatively large memory capacity. Thus, sensor nodes cannot easily support AODV based routing algorithms.
The IPv6 Routing Protocol for Low Power and Lossy Networks (RPL) is a recent routing protocol developed by the Internet Engineering Task Force (IETF) and published as standard RFC 6550. The RPL routing protocol considers memory capacity of the nodes and classifies routing mechanism into four mode of operation (MOP): MOP-0, MOP-1, MOP-2 and MOP-3. With MOP-0, RPL only supports uni-directional routing from the nodes to a root node, i.e., upward routing. MOP-1 allows bi-directional routing and uses source routing for downward routing. To reduce memory capacity, a MOP-1 node does not store routing information for any other node. As a result, the MOP-1 is called a non-storing mode. MOP-2 supports bi-directional routing and uses a routing table for downward routing. A MOP-2 node stores route entries for nodes in a sub-tree. Therefore, the MOP-2 is called a storing mode. However, with MOP-2, downward multicast is not supported. The MOP-3 does support downward multicast. Therefore, the MOP-3 is also called a storing mode. The MOP-2 and MOP-3 require node to have larger memory capacity to store route entries.
However, the RPL only allows one MOP for all router nodes in a network and does not allow router nodes to have different MOPs. All router nodes must have same MOP as the root node. If a node has a MOP different from the MOP of the root node, then this node can only be a leaf node and cannot extend the network.
Accordingly, it is desirable to provide a resource aware routing method that adapts its routing functions based on different resources and capabilities of the nodes.